package com.smedi.ismedi.authoritymanagement.core.application.service;

import com.smedi.ismedi.authoritymanagement.core.application.command.ElementCreateCommand;
import com.smedi.ismedi.authoritymanagement.core.application.command.ElementEditCommand;
import com.smedi.ismedi.authoritymanagement.core.application.command.ElementRemoveCommand;
import com.smedi.ismedi.authoritymanagement.core.application.command.RoleElementRelationshipSaveCommand;
import com.smedi.ismedi.authoritymanagement.core.domain.aggregatemodel.Element;

import java.util.List;

/**
 * 特种设备应用服务接口
 *
 * @author xienannan
 * @date 2021/08/28
 */
public interface ElementApplicationService {
    /**
     * 新建 元素
     *
     * @param elementCreateCommand 元素 新增 命令
     * @return Element
     */
    Element createElement(ElementCreateCommand elementCreateCommand);

    /**
     * 编辑 元素
     *
     * @param elementEditCommand 元素 新增 命令
     * @return Element
     */
    Element editElement(ElementEditCommand elementEditCommand);

    /**
     * 批量编辑 元素
     *
     * @param elementEditCommands 元素 新增 命令
     */
    void editElement(List<ElementEditCommand> elementEditCommands);

    /**
     * 删除 元素
     *
     * @param elementRemoveCommand 元素 新增 命令
     */
    void removeElement(ElementRemoveCommand elementRemoveCommand);

    /**
     * 删除 元素
     *
     * @param roleElementRelationshipSaveCommand 元素 新增 命令
     */
    void saveRoleElementRelationship(RoleElementRelationshipSaveCommand roleElementRelationshipSaveCommand);
}